package models;

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.Socket;

public class TCPSocket {
	
	Socket conexaoTCP;
	private int rcvPorta = 0;
	private InetAddress rcvIP = null;
	
	public TCPSocket(Socket conexao){
		conexaoTCP = conexao;
	}

	public void stop(){
		if(conexaoTCP != null)
			if(conexaoTCP.isConnected())
				try {
					//conexaoTCP.close();
					conexaoTCP = null;
				} catch (Exception e) {
					e.printStackTrace();
				}
	}
	
	public String receberMsg(){
		String dados = "";
		while(!conexaoTCP.isClosed()){ 
	    	try{
	    		BufferedReader dadosRec = new BufferedReader(
	    								  new InputStreamReader(
	    								  conexaoTCP.getInputStream()));
	    		
	    		dados = dadosRec.readLine();
		        rcvIP = conexaoTCP.getInetAddress();
		        rcvPorta = conexaoTCP.getLocalPort();

		        return dados;
	    	}catch(Exception e){
	    		System.out.println(e.getMessage());
	    	}
	    } 
		return dados;
	} 
	
	public void enviarMsg(String msg){
        try {
System.out.println("enviado: " + msg);
        	msg += "\n";							//Adiciona quebra de linha para poder ser lido posteriormente
        	byte[ ] DadosEnv  = new byte[1024]; 
        	DadosEnv = msg.getBytes();
        	DataOutputStream saida = new DataOutputStream(conexaoTCP.getOutputStream());
        	saida.write(DadosEnv);
 //System.out.println(rcvPorta + " enviado -> " + msg);
    	}catch(Exception e){
    		System.out.println(e.getMessage());
    	}
	}
	
	public int getRcvPorta() {
		return rcvPorta;
	}

	public InetAddress getRcvIp() {
		return rcvIP;
	}

	public int getPorta() {
		return conexaoTCP.getLocalPort();
	}

	public InetAddress getRIp() {
		return conexaoTCP.getInetAddress();
	}

	public boolean isClosed() {
		return conexaoTCP.isClosed();
	}

}
